#ifndef DYN_QUAD_QGAUSS16_H
#define DYN_QUAD_QGAUSS16_H

#include "dyn_quad_qGauss.h"

/*! \author Joey Dumont <joey.dumont@gmail.com>
 *
 *  \date 2012-10-07
 *
 *  \brief Gaussian quadrature with \f$N=16\f$.
 *
 * We define the variables associated with
 * \f$N=16\f$ Gaussian quadrature. The values are
 * taken from Abramowitz and Stegun.
 */

class qGauss16 : public qGauss
{
public:
    /*! Standard constructor for qGauss. */
    qGauss16(Functor& _func,
             double _a,
             double _b);

    /*! Re-declared pure virtual function. */
    void populateVectors();

protected:
    /*! @name Abscissas */
    //@{
    double x1 = 0.095012509837637440185;
    double x2 = 0.281603550779258913230;
    double x3 = 0.458016777657227386342;
    double x4 = 0.617876244402643748447;
    double x5 = 0.755404408355003033895;
    double x6 = 0.865631202387831743880;
    double x7 = 0.944575023073232576078;
    double x8 = 0.989400934991649932596;
    //@}

    /*! @name Weights */
    //@{
    double w1 = 0.189450610455068496285;
    double w2 = 0.182603415044923588867;
    double w3 = 0.169156519395002538189;
    double w4 = 0.149595988816576732081;
    double w5 = 0.124628971255533872052;
    double w6 = 0.095158511682492784810;
    double w7 = 0.062253523938647892863;
    double w8 = 0.027152459411754094852;
    //@}
};

#endif // DYN_QUAD_QGAUSS16_H
